package it.crosato.stage.server.model.retriever;

import it.crosato.stage.shared.exceptions.NonExistentException;
import it.crosato.stage.shared.exceptions.RetrievingException;
import it.crosato.stage.shared.objects.Pathway;

public interface IPathwayRetriever {

	/**
	 * Recupera una via metabolica gestendo internamente le interazioni
	 * con la banca dati interna e KEGG.
	 * @param id il codice della via metabolica generica
	 * @param organism il codice dell'organismo
	 * @param time tempo di scadenza nella banca dati interna
	 * @return la via metabolica recuperata con tutte le sue informazioni
	 * @throws NonExistentException se la via metabolica non esiste
	 * @throws RetrievingException se si verificano dei problemi nel recupero
	 */
	public abstract Pathway getPathway(String id, String organism, long time)
			throws NonExistentException, RetrievingException;

}